package models

import (
	"github.com/astaxie/beego/orm"
)

const (
	TASK_SUCCESS = 0  // 任务执行成功
	TASK_ERROR   = -1 // 任务执行出错
	TASK_TIMEOUT = -2 // 任务执行超时
)

//任务日志
type TaskLog struct {
	Id          int
	TaskId      int    //任务id创建时间
	Output      string //输出
	Error       string //错误信息
	Status      int    //状态     0：正常  -1：错误  -2:超时
	ProcessTime int    //任务执行时间
	CreateTime  int64  //
}

func (tasklog *TaskLog) TableName() string {
	return TableName("task_log")
}

// 添加执行日志
func TaskLogAdd(t *TaskLog) (int64, error) {
	return orm.NewOrm().Insert(t)
}

// 加载首页中间内容
func TaskLogGetList(page int, pageSize int, filter ...interface{}) ([]*TaskLog, int64) {
	//获取任务日志的句柄
	query := orm.NewOrm().QueryTable(TableName("task_log"))
	//判断是否有过滤的条件
	if len(filter) > 0 {

		// 获取过滤条件的长度
		l := len(filter)
		for i := 0; i < l; i += 2 {
			query = query.Filter(filter[i].(string), filter[i+1])
		}
	}

	total, _ := query.Count()

	list := make([]*TaskLog, 0)
	offset := (page - 1) * pageSize

	query.OrderBy("-id").Limit(pageSize, offset).All(&list)
	return list, total
}

//根据id查询日志详情
func TaskLogGetById(task_id int) (*TaskLog, error) {
	obj := &TaskLog{
		Id: task_id,
	}
	// 查询
	err := orm.NewOrm().Read(obj)
	if err != nil {
		return nil, err
	}

	return obj, nil
}

//删除日志
func TaskLogDelByid(id int) error {
	_, err := orm.NewOrm().QueryTable(TableName("task_log")).Filter("id", id).Delete()
	return err
}
